﻿using System;
using System.Data;
using System.Data.SqlClient;

namespace Operacional
{
    public class Tempos
    {
        #region Declaracoes

        private TimeSpan _Media, _Duracao, _TotalTimeSpan;
        private SqlDataAdapter daTop10;
        private DataTable dtTop10 = new DataTable();
        public string Tarefa;

        #endregion

        public Tempos()
        {            
            //select *
            //from linhas_tarefas
            //where id in(
            //                select top 10 id 
            //                from linhas_tarefas
            //                where linha = '01' and tarefa = '001' and estado ='f' order by data desc)
            //order by duracao desc
            Tarefa = frmLinhas.dvLinhasTarefas[frmLinhas.dvLinhasTarefas.Count - 1]["Tarefa"].ToString();
            string sql = string.Format(
                        "Select * from Linhas_Tarefas Where Id in " +
                        "( Select top 10 Id from Linhas_Tarefas Where Linha='{0}' and Tarefa='{1}' and Estado='F' " +
                        "Order by Data Desc) Order by Duracao Desc", frmLinhas.numLinha, Tarefa);

            daTop10 = new SqlDataAdapter(sql, frmEntrada.conn);
        }

        public void AvgTimes_()
        {
            dtTop10.Clear();
            daTop10.Fill(dtTop10);

            //Total de REGISTOS TAREFAS TERMINADAS
            int Registos = dtTop10.Rows.Count;            
            if (Registos > 0)
            {       
                try
                {
                    //Mete a 4 quando é maior que 3 senao mantêm...
                    if (Registos > 3) Registos = 4;                    
                    for (int i = 1; i <= Registos; i++)
                        _TotalTimeSpan = _TotalTimeSpan.Add(TimeSpan.Parse(dtTop10.Rows[dtTop10.Rows.Count - i]["Duracao"].ToString()));
                    
                    long myAverage = _TotalTimeSpan.Ticks / Registos; 
                    _Media = new TimeSpan(myAverage);                                        
                }
                catch { }
            }                        
        }

        public void Duracao_()
        {
            if (frmLinhas.dvLinhasTarefas.Count > 0)
            {
                DateTime TempoInicial = Convert.ToDateTime(frmLinhas.dvLinhasTarefas[frmLinhas.dvLinhasTarefas.Count - 1]["Data"].ToString());
                _Duracao = DateTime.Now.Subtract(TempoInicial);
            }
            else
                _Duracao = TimeSpan.Parse("00:00:00");
        }

        public TimeSpan Media
        { get { return _Media; } }

        public TimeSpan Duracao
        { get { return _Duracao; } }
    }
}
